//给定一个字符串数组，将字母异位词组合在一起。字母异位词指字母相同，但排列不同的字符串。 
//
// 示例: 
//
// 输入: ["eat", "tea", "tan", "ate", "nat", "bat"]
//输出:
//[
//  ["ate","eat","tea"],
//  ["nat","tan"],
//  ["bat"]
//] 
//
// 说明： 
//
// 
// 所有输入均为小写字母。 
// 不考虑答案输出的顺序。 
// 
// Related Topics 哈希表 字符串 排序 
// 👍 784 👎 0


import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;

//leetcode submit region begin(Prohibit modification and deletion)
class Solution {
    public List<List<String>> groupAnagrams(String[] strs) {
        //思路 将每个字符串转换为char数组 在进行排序
        HashMap<String, List<String>> hashMap=new HashMap<>();
        for (int i = 0; i < strs.length; i++) {
            char[] st=strs[i].toCharArray();
            Arrays.sort(st);
           String n_str= Arrays.toString(st);
           //获取指定 key 对应对 value，如果找不到 key ，则返回设置的默认值
          List<String> list=hashMap.getOrDefault(n_str, new ArrayList<>());
          list.add(strs[i]);
          hashMap.put(n_str, list);

        }
        //获取所有的值 生成一个新的list
        return new ArrayList<>(hashMap.values());
    }
}
//leetcode submit region end(Prohibit modification and deletion)
